/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.sql.SQLException;
import java.util.ArrayList;
import modelo.Curso;
import modelo.InstituicaoAcademica;
import modelo.InstituicaoCurso;
import util.Conexao;
import util.Dao;

/**
 *
 * @author bruno
 */
public class InstituicaoAcademicaDao extends Dao<InstituicaoAcademica> {

    public InstituicaoAcademicaDao() {
        super(new Conexao("Aurea", "sa", "sa", Conexao.sqlServerDriver));
    }

    @Override
    protected InstituicaoAcademica novoModelo() {
        return new InstituicaoAcademica();
    }

    @Override
    public boolean gravar(InstituicaoAcademica modelo) {
        return gravarModelo("INSERT INTO tbInstituicaoAcademica(designacao,sigla,fkPais)"
                + " VALUES(?,?,?)", modelo);
    }

    @Override
    protected void definirParametrosGravar() throws SQLException {
        conexao.getStatement().setString(1, modelo.getDesignacao());
        conexao.getStatement().setString(2, modelo.getSigla());
        conexao.getStatement().setInt(2, modelo.getPais().getId());

    }

    @Override
    public InstituicaoAcademica ler(int id) {
        return lerModelo("SELECT * FROM tbInstituicaoAcademica WHERE idInstituicaoAcademica = ?", id);
    }

    @Override
    protected void definirParametrosLer() throws SQLException {
        modelo.setDesignacao(conexao.getResultSet().getString("designacao"));
        modelo.setSigla(conexao.getResultSet().getString("sigla"));
        modelo.setPais(new PaisDao().ler(conexao.getResultSet().getInt("fkPais")));
    }

    @Override
    public ArrayList<InstituicaoAcademica> lerTodos() {
        return lerTodos("SELECT * FROM tbInstituicaoAcademica");
    }

    
    //preenche a intituicao com todos os seus cursos 
    public ArrayList<InstituicaoAcademica> lerTodosComCursos() {
        ArrayList<InstituicaoAcademica> iaLista = lerTodos();
        ArrayList<InstituicaoCurso> icLista = new InstituicaoCursoDao().lerTodos();

        for (InstituicaoAcademica ia : iaLista) {
            for (InstituicaoCurso ic : icLista) {
                if (ia.getId() == ic.getInstituicao().getId()) {
                    ia.getCursoLista().add(new CursoDao().ler(ic.getCurso().getId()));
                }
            }
        }
        return iaLista;
    }
}
